Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Метод стовпцевих перестановок

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2005
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Захист інформації в комп’ютерних системах
Група:
КІ-44

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 5 з курсу „ Захист інформації в комп’ютерних системах ” Метод стовпцевих перестановок Львів – 2005 Мета роботи: ознайомитися із методом стовпцевих перестановок та закріпити навики кодування тексту за допомогою цього методу. Завдання: За допомогою алгоритму стовпцевих перестановок закодувати вхідний текст. Текст програми: // Max_ZI5.cpp #include "stdafx.h" #include "stdlib.h" #include "io.h" #include "math.h" void error(); void encrypt(char*,char*); void decrypt(char*,char*); #define max_rows 20 #define max_columns 20 int main(int argc, char* argv[]) { char mode; puts("Stovptsevi peretvotennia. Lab 5 ZI\n *** (C) m@Qs, ki44 2005 ***\n"); if (argc!=4) error(); mode=argv[1][0]; if ( mode=='e') encrypt(argv[2],argv[3]); else if ( mode=='d') decrypt(argv[2],argv[3]); else { error(); } puts("\nDONE!"); return 0; } void encrypt(char* in,char* out) //into bmp { FILE * f_in; // вказівник на вхідний файл FILE * f_out; // вказівник на файл з зашифрованим текстом char ch; // символьна змінна для збереження зчитаних з вхідного файлу символів int txt_length=0; // довжина тексту для шифрування int array_rows=0; // кількість зайнятих рядків в масиві int array_columns=0; // кількість зайнятих стовпців в масиві int tmp; // змінна для проміжних результатів обчислень int i,j; char buf[max_rows][max_rows]; // масив, з допомогою якого здійснюється шифрування // Відкриваємо вхідний та вихідний файли if((f_in=fopen(in,"r")) == NULL) { printf("Unable to open input file %c\n",in); exit(1); } if((f_out=fopen(out,"w")) == NULL) { printf("Unable to open output file %c\n",out); exit(1); } // Визначаємо довжину тексту, який необхідно зашифрувати fscanf(f_in,"%c",&ch); while(!feof(f_in)) { if ( (ch != ' ') && (ch != '\n')) // Пробіли і \n не враховуємо txt_length++; fscanf(f_in,"%c",&ch); } // Довжина тексту не перевищує максимальної? if (txt_length > 400) { printf("Text to encode is too long."); exit(1); } // Знову відкриваємо вхідний файл для читання спочатку fclose(f_in); f_in=fopen("text.txt", "r"); // Визначення кількості рядків і стовпців масиву, які будуть зайняті текстом array_rows = sqrt(txt_length); array_columns = array_rows; tmp = txt_length - array_rows*array_rows; if ( tmp >= array_rows) { array_rows++; array_columns++; } else if( tmp>0) array_columns++; // Початкове обнулення масиву for (i=0; i<max_rows; i++) for (j=0; j<max_columns; j++) buf[i][j]=0; // Запис даних з файлу в масив порядково fscanf(f_in,"%c",&ch); for (i=0; i<=array_rows-1; i++) { for (j=0; j<=array_columns-1; j++) { while ( (ch == ' ') || (ch == '\n')) // пробіли і \n не враховуємо if (!feof(f_in)) // читаємо з файлу символи доки не друкований символ fscanf(f_in,"%c",&ch); // та записуємо його в змінну ch if (!feof(f_in)) // записуємо вміст ch в відповідну комірку масиву { buf[i][j]=ch; fscanf(f_in,"%c",&ch); } } } // Вивід масиву по стовпцях в вихідний файл for (i=0; i<=array_rows-1; i++) { for (j=0; j<=array_columns-1; j++) fprintf(f_out,"%c",buf[j][i]); fprintf(f_out," "); } printf("Everething mixed up ;) Results in %c\n",out); fclose(f_in);// закриваємо усі відкриті файли fclose(f_out); } void decrypt(char* in,char* out) //from bmp { FILE * f_in; // вказівник на вхідний файл FILE * f_out; // вказівник на файл з зашифрованим текстом char ch; // символьна змінна для збереження зчитаних з вхідного файлу символів int i,j; char buf[max_rows][max_rows]; // масив, з допомогою якого здійснюється шифрування тексту // Відкриваємо вхідний та вихідний файли if((f_in=fopen(in,"r")) == NULL) { ...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини